// 引入axios
import axios from 'axios'
// van-import引入main，是给后缀名vue用的，所以这里需要自己导入组件
import { Toast } from 'vant'

// 配置baseURL
// process.env --- 返回一个包含用户环境信息的对象
// NODE_ENV --- node中常用的到的环境变量,首先查看是否存在
// process.env.NODE_ENV的值为dev就是本地环境的url，为pre就是测试环境的，为preduction就是生产环境的
const baseURL = process.env.NODE_ENV === 'development' ? 'https://www.xiongmaoyouxuan.com' : '真实后端接口的URL'

// 创建实例
const service = axios.create({
  // 基本路径，相同部分
  baseURL,
  // 什么时候过期，单位是毫秒
  timeout: 5000
})

// 请求拦截
service.interceptors.request.use(function (config) {
  // 提示加载信息,需要用到vant组件
  Toast.loading({
    // message文本内容，支持换行/n
    message: '加载中...',
    // forbidClick是否禁止背景点击
    forbidClick: true,
    // duration展示时长(ms)，值为 0 时，toast 不会消失，所以需要在响应时设置关闭
    duration: 0
  })
  return config
})

// 响应拦截
service.interceptors.response.use(response => {
  // 关闭加载提示
  Toast.clear()
  if (response.status === 200) { // 能够正常获取到数据
    if (response.data.code === 200) { // 接口本身返回的是正常数据
      return response.data.data
    } else { // 返回的是有错误的数据
      const e = new Error('后端接口异常')
      e.error = response.data
      Promise.reject(e)
    }
  } else {
    const err = new Error('请求接口失败')
    err.error = response
    Promise.reject(err)
  }
})

export default service
